package view.joueur;

import extended.ExtJoueur;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JButton;

import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

import controler.CtrJoueur;
import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;
import java.awt.Insets;
import java.awt.Component;
import javax.swing.Box;
import javax.swing.JLabel;
import java.awt.Font;
import javax.swing.SwingConstants;


/**
 * @author C-Net
 * Panel permettant la restauration de joueurs
 */
public class JPJoueurRestaurer extends javax.swing.JPanel implements ActionListener{
	/**
	 * 
	 */
	private static final long serialVersionUID = 3720094221174742849L;
	private JButton btnAnnuler;
	private JButton btnRestaurer;
	private JScrollPane jSPListe;
	
	private String[] entete = {"ID","Nom", "Objectif"};
	private DefaultTableModel model = new DefaultTableModel(null,entete);
	private JTable jTListe = new JTable(model);
	
	private JPJoueur jPJoueur;
	private Component verticalStrut;
	private Component verticalStrut_1;
	private JLabel lblNewLabel;
	private Component verticalStrut_2;
	private Component verticalStrut_3;
	
	public JPJoueurRestaurer(JPJoueur jPJoueur) {
		super();
		this.jPJoueur = jPJoueur;
		initGUI();
	}
	
	private void initGUI() {
		try {
			GridBagLayout gridBagLayout = new GridBagLayout();
			gridBagLayout.columnWidths = new int[]{0, 0, 229, 218, 0};
			gridBagLayout.rowHeights = new int[]{0, 0, 0, 233, 0, 23, 0, 0};
			gridBagLayout.columnWeights = new double[]{0.0, 0.0, 1.0, 1.0, Double.MIN_VALUE};
			gridBagLayout.rowWeights = new double[]{0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, Double.MIN_VALUE};
			setLayout(gridBagLayout);
			{
				verticalStrut_1 = Box.createVerticalStrut(20);
				GridBagConstraints gbc_verticalStrut_1 = new GridBagConstraints();
				gbc_verticalStrut_1.insets = new Insets(0, 0, 5, 5);
				gbc_verticalStrut_1.gridx = 0;
				gbc_verticalStrut_1.gridy = 0;
				add(verticalStrut_1, gbc_verticalStrut_1);
			}
			{
				lblNewLabel = new JLabel("Joueurs Supprim\u00E9s");
				lblNewLabel.setHorizontalAlignment(SwingConstants.CENTER);
				lblNewLabel.setFont(new Font("Tahoma", Font.PLAIN, 24));
				GridBagConstraints gbc_lblNewLabel = new GridBagConstraints();
				gbc_lblNewLabel.gridwidth = 2;
				gbc_lblNewLabel.insets = new Insets(0, 0, 5, 0);
				gbc_lblNewLabel.gridx = 2;
				gbc_lblNewLabel.gridy = 1;
				add(lblNewLabel, gbc_lblNewLabel);
			}
			{
				verticalStrut = Box.createVerticalStrut(20);
				GridBagConstraints gbc_verticalStrut = new GridBagConstraints();
				gbc_verticalStrut.insets = new Insets(0, 0, 5, 5);
				gbc_verticalStrut.gridx = 1;
				gbc_verticalStrut.gridy = 2;
				add(verticalStrut, gbc_verticalStrut);
			}
			
			{
				jSPListe = new JScrollPane(jTListe);
				GridBagConstraints gbc_jSPListe = new GridBagConstraints();
				gbc_jSPListe.fill = GridBagConstraints.BOTH;
				gbc_jSPListe.insets = new Insets(0, 0, 5, 0);
				gbc_jSPListe.gridwidth = 2;
				gbc_jSPListe.gridx = 2;
				gbc_jSPListe.gridy = 3;
				this.add(jSPListe, gbc_jSPListe);
				jSPListe.setBounds(0, 0, 730, 660);
			}
			{
				verticalStrut_2 = Box.createVerticalStrut(20);
				GridBagConstraints gbc_verticalStrut_2 = new GridBagConstraints();
				gbc_verticalStrut_2.insets = new Insets(0, 0, 5, 5);
				gbc_verticalStrut_2.gridx = 2;
				gbc_verticalStrut_2.gridy = 4;
				add(verticalStrut_2, gbc_verticalStrut_2);
			}
			{
				btnRestaurer = new JButton();
				GridBagConstraints gbc_btnRestaurer = new GridBagConstraints();
				gbc_btnRestaurer.anchor = GridBagConstraints.NORTHEAST;
				gbc_btnRestaurer.insets = new Insets(0, 0, 5, 5);
				gbc_btnRestaurer.gridx = 2;
				gbc_btnRestaurer.gridy = 5;
				this.add(btnRestaurer, gbc_btnRestaurer);
				btnRestaurer.setText("Restaurer");
				btnRestaurer.setBounds(99, 666, 94, 23);
			}
			btnRestaurer.addActionListener(this);
			{
				btnAnnuler = new JButton();
				GridBagConstraints gbc_btnAnnuler = new GridBagConstraints();
				gbc_btnAnnuler.insets = new Insets(0, 0, 5, 0);
				gbc_btnAnnuler.anchor = GridBagConstraints.NORTHWEST;
				gbc_btnAnnuler.gridx = 3;
				gbc_btnAnnuler.gridy = 5;
				this.add(btnAnnuler, gbc_btnAnnuler);
				btnAnnuler.setText("Retour \u00E0 la liste");
				btnAnnuler.setBounds(436, 666, 94, 23);
			}
			btnAnnuler.addActionListener(this);
			{
				verticalStrut_3 = Box.createVerticalStrut(20);
				GridBagConstraints gbc_verticalStrut_3 = new GridBagConstraints();
				gbc_verticalStrut_3.insets = new Insets(0, 0, 0, 5);
				gbc_verticalStrut_3.gridx = 2;
				gbc_verticalStrut_3.gridy = 6;
				add(verticalStrut_3, gbc_verticalStrut_3);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public void afficherListe() {
		CtrJoueur ctr = jPJoueur.getCtrJoueur();
		int i = 0;
		this.model = new DefaultTableModel(null,entete);
		
		jTListe.setModel(model);
		jTListe.repaint();
		
		while (i < ctr.getExtJoueursSupp().size()){
			
			String id = String.valueOf(ctr.getExtJoueursSupp().get(i).getJoueur().getIdJoueur());
			String nom = ctr.getExtJoueursSupp().get(i).getJoueur().getNomJoueur();
			String objectif = ctr.getExtJoueursSupp().get(i).getJoueur().getObjectif();
			
			String[] tab = {id, nom, objectif};
			model.addRow(tab);
			
			
			
			i++;
		}
		jTListe.setModel(model);
		jTListe.getColumnModel().getColumn(0).setMinWidth(0);
		jTListe.getColumnModel().getColumn(0).setMaxWidth(0);
		jTListe.repaint();
		
	}
	@Override
	public void actionPerformed(ActionEvent e) {
		if (e.getSource() == btnAnnuler){
			try {
				jPJoueur.affAfficher();
			} catch (Exception e1) {
				e1.printStackTrace();
			}
		}
		if (e.getSource() == btnRestaurer){
			try {
				int i = jTListe.getSelectedRow();
				if (i != -1){
					int id = Integer.parseInt(jTListe.getValueAt(i,0).toString());
					ExtJoueur joueur = null;
					for (int j = 0 ; j < jPJoueur.getCtrJoueur().getExtJoueursSupp().size() ; j++){
						if ( jPJoueur.getCtrJoueur().getExtJoueursSupp().get(j).getJoueur().getIdJoueur() == id){
							joueur = new ExtJoueur(jPJoueur.getCtrJoueur().getExtJoueursSupp().get(j).getJoueur(),
									jPJoueur.getCtrJoueur().getCtrPartie().getPartie().getIndice());
							i = j;
						}
							
					}
					jPJoueur.getCtrJoueur().getCtrPartie().majIdJoueur();

					List<Integer> idIndiceJoueur = new ArrayList<Integer>();
					for (int j = 0 ; j < joueur.getIndiceNonDecouvert().size() ; j++){
						idIndiceJoueur.add(new Integer(joueur.getIndiceDecouvert().get(j).getIdIndice()));
					}
					
					id = jPJoueur.getCtrJoueur().getCtrPartie().getIDJoueur() + 1;
					jPJoueur.getCtrJoueur().ajouterJoueur(String.valueOf(id),
							joueur.getJoueur().getNomJoueur(),
							joueur.getJoueur().getPwdJoueur(),
							joueur.getJoueur().getBackground(),
							joueur.getJoueur().getObjectif(),
							joueur.getJoueur().getChronoJoueur(),
							joueur.getIndiceDecouvert(),
							joueur.getIndiceNonDecouvert());
					jPJoueur.getjPAffichage().afficherListe();
					jPJoueur.getCtrJoueur().getExtJoueursSupp().remove(i);
					model.removeRow(i);					
					jTListe.setModel(model);
					jTListe.repaint();
					jPJoueur.getjPAffichage().afficherListe();
					
				}
			} catch (Exception e1) {
				e1.printStackTrace();
			}
		}
		
	}

	public void setjTListe(JTable jTListe) {
		this.jTListe = jTListe;
	}

	public JTable getjTListe() {
		return jTListe;
	}

}
